package com.heima.leadnews.article.controller;


import com.heima.leadnews.article.service.ApArticleService;
import com.heima.model.article.dto.ApArticleDTO;
import com.heima.model.article.dto.ApArticleLoadMoreDTO;
import com.heima.model.article.dto.ApArticleLoadNewDTO;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dto.WmNewsDTO;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 文章信息表，存储已发布的文章 前端控制器
 * </p>
 *
 * @author author
 * @since 2023-05-31
 */
@RestController
@RequestMapping("/api/v1/article")
@Api(tags = "文章查询相关接口")
public class ApArticleController {

    @Autowired
    private ApArticleService apArticleService;

    /**
     * 查询频道最新的十个文章
     *
     * @param dto
     * @return
     */
    @PostMapping("/load")
    public ResponseResult<List<ApArticle>> load(@RequestBody ApArticleDTO dto) {
        //1。接收参数
        //2.调用service完成文章查询
        //3.返回参数给前端
        return apArticleService.load(dto);
    }

    /**
     * 上滑，查询比底部文章发布时间小的10个文章
     *
     * @param dto
     * @return
     */
    @PostMapping("/loadmore")
    public ResponseResult<List<ApArticle>> loadMore(@RequestBody ApArticleLoadMoreDTO dto) {
        //1。接收参数
        //2.调用service完成文章查询
        //3.返回参数给前端
        return apArticleService.loadMore(dto);
    }

    /**
     * 下滑，查询比顶部文章发布时间大的10个文章
     *
     * @param dto
     * @return
     */
    @PostMapping("/loadnew")
    public ResponseResult<List<ApArticle>> loadNew(@RequestBody ApArticleLoadNewDTO dto) {
        //1。接收参数
        //2.调用service完成文章查询
        //3.返回参数给前端
        return apArticleService.loadNew(dto);
    }

    /**
     * 保存用户端文章的接口
     * 该接口是一个内部接口，被weMedia服务远程调用的。
     *
     * @param dto
     * @return
     */
    @PostMapping("/save")
    public ResponseResult<Long> saveArticle(@RequestBody WmNewsDTO dto) {
        //1.接收参数
        //2.调用service完成文章查询
        //3.返回参数给前端
        return apArticleService.saveArticle(dto);
    }

    /**
     * 更新文章详情页面地址
     * @param articleId
     * @param url
     * @return
     */
    @GetMapping("/update")
    public ResponseResult<Long> updateStaticUrl(@RequestParam("articleId") Long articleId
            , @RequestParam("url") String url) {
        //1.接收参数
        //2.调用service完成文章查询
        //3.返回参数给前端
        return apArticleService.updateStaticUrl(articleId,url);
    }

}















